The growth in popularity and complexity of multiplayer online games has been accompanied by an increase in the problem of cheating. Many kinds of cheats are currently in use by players of such games. Typically, a cheat is designed to give a player an unfair advantage over other players. Cheats commonly expose game states or other information that otherwise would be hidden from the player (for example, the ability to see through walls or to see into the future). A cheat may also involve the manipulation of the game client program to enhance the player's abilities. A cheating player might use the application programming interface provided with a game program to manipulate the workings of the program and extract information about the game, or the player might intercept graphics commands issued by the program to the operating system. Cheating and other unauthorized behavior may also be perpetrated to harm other players and to cause general disruption in the operation of the game.
The detection and prevention of cheating and other unauthorized behavior is important in ensuring the quality of service of multiplayer online games, because if such behavior is uncurbed, non-cheating players tend to abandon the game. Some game providers have developed techniques for detecting cheats of various kinds. However, the nature of cheat detection in a networked game setting has limited the effectiveness of anti-cheat systems. To detect a cheat or other unauthorized activity, an anti-cheat facility typically executes code on a game client machine. The code examines the machine and reports results. It is important that the anti-cheat facility be able to trust the results. Because the cheating player is, presumably, in control of the machine, he typically can examine the executing anti-cheat code and figure out what the code is doing, regardless of its complexity or obscurity. A sophisticated cheater can thus find ways of avoiding detection and of subverting the anti-cheat system.
Two problems in particular have arisen in previous anti-cheat systems. In one case, the client is actually cheating but deceptively leads the system to conclude that it is not cheating. In another case, a cheating player attacks the integrity of the anti-cheat system by causing the system to believe that he is a different, non-cheating player. The system then bans the innocent player from participating in the game. In both cases, the cheating player uses his control of the client machine to diminish the ability of the system to trust the results of anti-cheat detection code. It is with respect to these considerations and others that the present invention has been made.